]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
screenshot: Do not wrongly enable window button
authorFlorian Müllner <fmuellner@gnome.org>
Thu, 7 Sep 2023 15:59:03 +0000 (17:59 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Thu, 7 Sep 2023 16:23:29 +0000 (18:23 +0200)
The window button is disabled when
 - there are no windows
 - we are in screen-recording mode
 - the session mode doesn't allow windows

However the last condition is only taken into account when
opening the dialog, but not when switching from recording-
to screenshot mode.

Address this by updating the button's sensitivity in a separate
function, so the different conditions are considered consistently.

Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6990

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2944>

js/ui/screenshot.js

index d3c28a26b69883f98bb6c3b39818f71a375ba3f1..d6365339680ebc6de814e2282e280909f7bacb60 100644 (file)
@@ -1401,6 +1401,16 @@ export const ScreenshotUI = GObject.registerClass({
         this._castButton.reactive = Main.sessionMode.allowScreencast;
     }
 
+    _syncWindowButtonSensitivity() {
+        const windows =
+            this._windowSelectors.flatMap(selector => selector.windows());
+
+        this._windowButton.reactive =
+            Main.sessionMode.hasWindows &&
+            windows.length > 0 &&
+            !this._castButton.checked;
+    }
+
     _refreshButtonLayout() {
         const buttonLayout = Meta.prefs_get_button_layout();
 
@@ -1517,10 +1527,7 @@ export const ScreenshotUI = GObject.registerClass({
                 });
             }
 
-            this._windowButton.reactive =
-                Main.sessionMode.hasWindows &&
-                windows.length > 0 &&
-                !this._castButton.checked;
+            this._syncWindowButtonSensitivity();
             if (!this._windowButton.reactive)
                 this._selectionButton.checked = true;
 
@@ -1763,9 +1770,7 @@ export const ScreenshotUI = GObject.registerClass({
 
             this._captureButton.remove_style_pseudo_class('cast');
 
-            const windows =
-                this._windowSelectors.flatMap(selector => selector.windows());
-            this._windowButton.reactive = windows.length > 0;
+            this._syncWindowButtonSensitivity();
         }
     }